#include <Python.h>
#include <gtktester.h>
#include <glib.h>

static PyMethodDef GtkTesterInitMethods[] = {
	{NULL, NULL, 0, NULL}		/* Sentinel */
};

PyMODINIT_FUNC
initgtktesterinit(void)
{
	PyObject *av;
	int argc, i;
	char **argv;

	av = PySys_GetObject("argv");

	if (av != NULL) {
		if (!PyList_Check(av)) {
			PyErr_Warn(PyExc_Warning, "ignoring sys.argv: it must be a list of strings");
			av = NULL;
		} else {
			argc = PyList_Size(av);
			for (i = 0; i < argc; i++)
				if (!PyString_Check(PyList_GetItem(av, i))) {
					PyErr_Warn(PyExc_Warning, "ignoring sys.argv: it must be a list of strings");
					av = NULL;
					break;
				}
		}
	}
	if (av != NULL) {
		argv = g_new(char *, argc);
		for (i = 0; i < argc; i++)
			argv[i] = g_strdup(PyString_AsString(PyList_GetItem(av, i)));
	} else {
		argc = 0;
		argv = NULL;
	}

	if (!gtktester_init_check(argc, argv)) {
		PyErr_SetString(PyExc_RuntimeError, "could not open display");
	}
	if (argv != NULL) {
		for (i = 0; i < argc; i++)
			g_free(argv[i]);
		g_free(argv);
	}
	Py_InitModule("gtktesterinit", GtkTesterInitMethods);
	return;
}
